package br.projecao.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.projecao.dao.QuestaoDAO;
import br.projecao.dao.RespostaDAO;
import br.projecao.dao.UsuarioDAO;
import br.projecao.modelo.Alternativa;
import br.projecao.modelo.Questao;
import br.projecao.modelo.Resposta;
import br.projecao.modelo.Usuario;

@ManagedBean
@SessionScoped
public class FormularioBean {

	public boolean isIniciado() {
		return iniciado;
	}

	public void setIniciado(boolean iniciado) {
		this.iniciado = iniciado;
	}

	List<Questao> listaQuestoes;
	List<Alternativa> alternativas = new ArrayList<Alternativa>();
	Alternativa alternativaSelecionada = new Alternativa();

	public boolean iniciado = false;

	@SuppressWarnings("unchecked")
	public FormularioBean() {

	}

	public void limpar() {
		this.alternativas = new ArrayList<Alternativa>();
		this.alternativaSelecionada = new Alternativa();
	}

	public Alternativa getAlternativaSelecionada() {
		return alternativaSelecionada;
	}

	public void setAlternativaSelecionada(Alternativa alternativaSelecionada) {
		this.alternativaSelecionada = alternativaSelecionada;
	}

	public List<Alternativa> getAlternativas() {

		return alternativas;
	}

	public void setAlternativas(List<Alternativa> alternativas) {
		this.alternativas = alternativas;
	}

	public void addAlternativa(javax.faces.event.AjaxBehaviorEvent a) {

		Boolean jaAdicionado = false;

		for (Alternativa alternativa01 : getAlternativas()) {
			if (alternativa01.getQuestao().getId()
					.equals(alternativaSelecionada.getQuestao().getId())) {
				jaAdicionado = true;
				this.alternativas.set(getAlternativas().indexOf(alternativa01),
						alternativaSelecionada);
			}
		}

		if (!jaAdicionado) {
			this.alternativas.add(alternativaSelecionada);
		}

	}

	public List<Questao> getListaQuestoes() {
		return listaQuestoes;
	}

	public void setListaQuestoes(List<Questao> listaQuestoes) {
		this.listaQuestoes = listaQuestoes;
	}

	public String finalizarQuestionario() {
		Usuario usuarioF = new Usuario();
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarioDAO.cadastrar(usuarioF);

		Resposta respostaTemp;
		RespostaDAO respostaDAO = new RespostaDAO();

		for (Alternativa alternativa : getAlternativas()) {
			respostaTemp = new Resposta();
			respostaTemp.setAlternativa(alternativa);
			respostaTemp.setUsuario(usuarioF);
			respostaDAO.cadastrar(respostaTemp);
		}
		limpar();
		iniciado = false;
		return "finalizado.xhml";

	}

	public String iniciar() {
		QuestaoDAO dao = new QuestaoDAO();
		listaQuestoes = dao.listarTodosMinAlt();
		iniciado = true;

		return "index.xhml";
	}

}
